import zipfile
import os


def createZipFile():
    print("================创建和添加到 ZIP 文件==================")
    zipFile = zipfile.ZipFile('test.zip', 'w')
    #  write()
    #  第一个参数是一个字符串，代表要添加的文件名。
    #  第二个参数是压缩类型，指定压缩算法。
    #  可以总是将这个值设置为 zipfile.ZIP_DEFLATED（deflate 压缩算法，对各种类型的数据都很有效）。
    zipFile.write('spam001.txt', compress_type=zipfile.ZIP_DEFLATED)
    zipFile.write('spam003.txt', compress_type=zipfile.ZIP_DEFLATED)
    zipFile.write('spam007.txt', compress_type=zipfile.ZIP_DEFLATED)
    zipFile.close()


def readZipFileInfo():
    print("================读取 ZIP 文件==================")
    zipFile = zipfile.ZipFile("test.zip", 'r')
    print(zipFile.namelist())
    fileInfo = zipFile.getinfo('spam003.txt')
    print(fileInfo)
    print(fileInfo.file_size)
    print(fileInfo.compress_size)
    zipFile.close()


def unZipFile():
    print("================从 ZIP 文件中解压缩==================")
    file = zipfile.ZipFile("test.zip")
    file.extractall()  # 解压到当前工作目录
    # file.extractall('./')  # 解压到指定目录
    # file.extract('spam001.txt')  # 解压单个文件到当前工作目录
    # file.extract('spam003.txt', './')  # 解压单个文件到指定目录
    file.close()


def delTxtFile():
    # 删除文件
    for rfile in os.listdir('./'):
        if rfile.endswith('.txt'):
            os.remove(rfile)


if __name__ == '__main__':

    path = os.getcwd()
    os.chdir('./file/test')

    num = 2
    if num == 0:
        createZipFile()
    elif num == 1:
        readZipFileInfo()
    elif num == 2:
        unZipFile()
    else:
        delTxtFile()
